﻿using Extensions.Services;
using Hangfire;

namespace PLC.Domain.ScheduledTasks.Job;

public interface IPLCReadAndWriteJob
{
    // 任务执行时间的输出 的过滤器
    [JobPerformTime] 
    //[LogEverything]
    // 方法同时只能有一个被执行  通过加锁 来实现  锁过期时间是1s 超过时间会 报错 如果是多态服务器 那么就是分布式锁
    [DisableConcurrentExecution(5)]
    // 对于重试机制的设置  超时和会重试  然后  重试 的时候 直接删除  这样就完成了不能重入的设置了
    // 但是超时时间要设置的短一点  这样的话队列的里的任务就不会堆积
    // 最少要有两个工作线程  才能完成
    [AutomaticRetry(Attempts = 0, LogEvents = false, OnAttemptsExceeded = AttemptsExceededAction.Delete)]
    Task Work();
}